home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disk User Volume 3 #9
/
Commodore_Disk_User_Vol.3_9_1990_-.d64
/
file recovery
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
109 lines
0 rem ******************
1 rem ****** ******
2 rem **** file ****
3 rem **** recovery program ****
4 rem **** ****
5 rem **** written by m.carroll ****
6 rem **** march 1990 ****
7 rem ****** ******
8 rem ******************
9 :
10 sys65409:poke51,0:poke52,90:poke55,0
20 poke56,90:clr:dimd(35,20),s(255)
30 poke54296,0:sys65418:fort=1to35
40 reada:forb=0toa:d(t,b)=-1:next
50 print".";:next:poke53265,0:d(18,0)=0
60 data20,20,20,20,20,20,20,20,20,20
70 data20,20,20,20,20,20,20,0,18,18
80 data18,18,18,18,17,17,17,17,17,17
90 data16,16,16,16,16
100 poke53280,0:poke53281,0:poke808,251
110 fora=679to744:readb:pokea,b:next
120 print"[147][153]"tab(9)"[198]ile [210]ecovery [208]rogram."
130 printtab(9)"[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
140 print"[211]pecify start addresses to be searched for, use [210][197][212][213][210][206] to confirm."
150 poke53265,27:open1,0,0:input#1,a$:close1:a$=a$+" "
160 iflen(a$)/5<>int(len(a$)/5)then120
170 dima(len(a$)/5-1):n=0
180 fora=1tolen(a$)-4step5
190 b$=mid$(a$,a,4)
200 forc=0to3:a(n)=a(n)*16
210 a(n)=a(n)+asc(mid$(a$,a+c,4))-48+7*(asc(mid$(a$,a+c,4))>64):next
220 n=n+1:next:n=n-1
230 sys65511:print:poke198,0
240 print"[147][208]ress any key to start formatting a fresh disc...":poke198,0
250 wait198,1:poke198,0
260 print"[147][207]kay...":t1=1:t2=1:b1=0:b2=0
270 open15,8,15,"u;"
280 print#15,"m-w"chr$(105)chr$(0)""
290 print#15,"n0:recovered files,rf"
300 get#15,a,a$,b,b:ifathen290
310 fora=0to498step166
320 print"[147][201]nsert damaged disc and press [211][208][193][195][197]..."
330 poke198,0:wait198,1:poke198,0
340 print"[147][207]kay - reading from disc..."
350 forb=0to165
360 ifnot(d(t1,b1))thenb=b-1:goto410
370 open5,8,5,"#"
380 print#15,"u1:"5;0;t1;b1
390 print#15,"b-p:5,0"
400 poke698,b+90:sys679:close5
410 b1=b1+1:ifb1=21thenb1=0:t1=t1+1
420 next
430 print"[147][201]nsert fresh disc and press [211][208][193][195][197]..."
440 poke198,0:wait198,1:poke198,0
450 print"[147][207]kay - writing to disc..."
460 forb=0to165
470 ifnot(d(t2,b2))thenb=b-1:goto520
480 open5,8,5,"#":poke726,90+b
490 print#15,"b-p:5,0":sys712
500 print#15,"u2:"5;0;t2;b2
510 close5
520 b2=b2+1:ifb2=21thenb2=0:t2=t2+1
530 next:next
540 data162,5,32,198,255,160,0,32,207,255,72,120,169,,133,1,104,153,,,169,55
550 data133,1,88,200,208,235,162,,76,198,255,162,5,32,201,255,160,,120,169,,133
560 data1,185,,,72,169,55,133,1,88,104,32,210,255,200,208,235,162,3,76,201,255
570 print"[147][207]kay - searching disc..."
580 open5,8,5,"#"
590 print#15,"u1:5,0,18,0"
600 print#15,"b-p:5,4"
610 fora=0to139:print#5,chr$(0);
620 next:print#15,"u2:5,0,18,0"
630 close5:t=1:b=-1:s=1
640 fora=0to255:s(a)=0:next:s(1)=255:fe=0:goto660
650 ifd(t,b)then690
660 b=b+1:ifb=21thenb=0:t=t+1
670 ift=36then890
680 goto650
690 open5,8,5,"#"
700 print#15,"u1:"5;0;t;b
710 print#15,"b-p:5,2"
720 get#5,a$,b$,c$,c$:close5
730 sa=asc(a$+chr$(0))+asc(b$+chr$(0))*256:bs=b$=c$
740 a=0
750 ifsa<>a(a)then870
760 f$=right$("00"+right$(str$(fe+s*8-8),len(str$(fe+s*8-8))-1),3)
770 a$="-m/c at":ifbsthena$="-bas at"
780 f$="[130]"+chr$(t)+chr$(b)+f$+a$+right$(" "+str$(sa),6)
790 fora=1to19:s(fe*32+1+a)=asc(mid$(f$,a,1)):next
800 fe=(fe+1)and7:iffethen870
810 s(0)=18:s(1)=s+1
820 open5,8,5,"#":print#15,"b-p:5,0"
830 fora=0to255:print#5,chr$(s(a));
840 next:print#15,"u2:"5;0;18;s
850 close5:s=s+1:ifs<19then640
860 print"[147][206]ot enough room!":goto900
870 a=a+1:ifnot(n<a)then750
880 goto660
890 print"[147][207]kay - finished."
900 open5,8,5,"#"
910 print#15,"b-p:5,0"
920 fora=0to255:print#5,chr$(s(a));
930 next:print#15,"u2:"5;0;18;s
940 close5:close15
950 print"[157]"s*8-8+fe"files found."
960 poke198,10:fora=631to640
970 readb:pokea,b:next:poke808,237
980 data76,79,65,68,34,36,34,44,56,13